package
{
	public class Region
	{
		private var _minX:int = 0xFFFE;
		private var _minY:int = 0xFFFE;
		private var _maxX:int = 0xFFFF;
		private var _maxY:int = 0xFFFF;
		
		public function Region(minX:int, minY:int, maxX:int, maxY:int)
		{
			_minX = minX;
			_minY = minY;
			_maxX = maxX;
			_maxY = maxY;	
		}
		
		public function isEmpty():Boolean
		{
			return (_minX >= _maxX || _minY >= _maxY);
		}
		
		public function isInRegion(x:int, y:int):Boolean
		{
			return (!(_minX > x || _maxX < x || _minY > y || _maxY < y))
		}
		
		public function isCrossWithRegion(rg:Region):Boolean
		{
			return !( (rg._minX > _maxX) || (rg._maxX < _minX) 
				|| (rg._minY > _maxY) || (rg._maxY < _minY) );
		}
		
		public function getCrossRegion(rg:Region):Region
		{
			return new Region(Math.max(_minX, rg._minX),
							   Math.max(_minY, rg._minY),
							   Math.min(_maxX, rg._maxX),
							   Math.min(_minY, rg._minY));
		}
		
	}
}